def foo():
    b = "hello"
    a = 200
    # Python中可以在函数内部再定义函数
    def bar():
        c = True
        print(a)
        print(b)
        print(c)

    # 内部函数调用
    bar()

def foo2():
    global a
    a = 222
    print(a)

if __name__ == '__main__':
    a = 100
    foo()
    ## 函数调用不能改变全局变量外层的值
    print(a)
    foo2()

    ##global关键字来指示foo函数中的变量a来自于全局作用域，如果全局作用域中没有a
    print(a)


def outer():
    count = 0  # 这里的count是outer函数的局部变量

    def inner():
        nonlocal count  # 告诉Python这里的count不是inner函数的局部变量，而是外部函数outer的局部变量
        count += 1  # 修改outer函数中的count变量
        print(count)  # 输出修改后的值

    return inner

my_func = outer()
my_func()  # 输出 1
my_func()  # 输出 2
